package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.ProfessionEntity;
import com.tfjybj.itoo.teach.model.ProfessionModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * ProfessionDao接口
 * profession表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("professionDao")
public interface ProfessionDao extends BaseMapper<ProfessionEntity> {
	
	//region 模板生成：模糊查询
    /**
     * 根据专业名称模糊查询profession
     *
     * @param name  专业名称
     * @return 模糊查询的profession集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<ProfessionEntity> queryLikeName(@Param("name") String name);
    //endregion

    /* **********************************以下为非模板生成的内容********************************* */
    /**
     * 根据教学部门id查询专业信息（带分页）
     * @param academyId 学院id
     * @return
     * @author 杨燕梅
     * @since 2.0.0 2018-11-15 15:53:42
     */
    List<ProfessionModel> queryByAcademyIdPageInfo(@Param("academyId") String academyId);

    /**
     * 根据教学部门id查询专业信息
     * @param academyId 学院id
     * @return
     * @author 杨燕梅
     * @since 2.0.0 2018-11-15 15:53:42
     */
    List<ProfessionModel> queryByAcademyId(@Param("academyId") String academyId);

    /**
     * 根据专业名称查询professions
     * @param name  专业名称
     * @return 查询的profession
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<ProfessionModel> queryByName(@Param("name") String name);

    /**
     * 查询所有专业层次
     *
     * @return nature  专业层次
     * @author 杨燕梅
     * @since 2.0.0 2018-11-28 14:59:20
     */
    List<ProfessionModel> queryAllNature();

    /**
     * 查询所有学制
     *
     * @return schoolLength  学制
     * @author 杨燕梅
     * @since 2.0.0 2018-11-28 14:59:40
     */
    List<ProfessionModel> queryAllSchoolLength();

    /**
     * 根据专业名称模糊查询某一学院下属专业
     *
     * @param searchContent  专业名称
     * @param academyId 学院id
     * @return 模糊查询的某一学院下属专业
     * @author 杨燕梅
     * @since 2.0.0 2018-11-28 20:21:04
     */
    List<ProfessionModel> queryByLikeNameAndAcademyId(@Param("academyId") String academyId, @Param("searchContent") String searchContent);

    /**
     * 根据专业ID查询专业详情
     *
     * @param idList 专业ID
     * @return 专业实体集合
     * @author 杨燕梅
     * @since 2.0.0 2018-12-12 20:10:09
     */
    List<ProfessionModel> queryProfessionById(@Param("idList") List<String> idList);

    /**
     * 根据专业代码和专业名称查询专业是否已存在
     *
     * @param code   专业代码
     * @param name   专业名称
     * @return 专业code
     * @author 杨燕梅
     * @since 2.0.0 2018-12-2 10:43:14
     */
    List<ProfessionEntity> queryByCodeAndNameExist(@Param("code") String code, @Param("name") String name);

    /**
     * 根据专业性质（专业层次）汉字（本科，专科，专升本）查询相应代码
     * @param name  专业性质（专业层次）汉字
     * @return 专业层次的相应代码
     * @author 杨燕梅
     * @since 2.0.0 2018-12-2 20:28:43
     */
    String queryNatureIdByName(@Param("name") String name);

    /**查询所有专业信息
     * @return
     * @author 郄子硕
     * @since 2.0.0 2018-12-10 10:45:08
     */
    List<ProfessionEntity> queryAllProfession();

    /**
     * 根据专业名称获取专业Id作为班级的专业Id
     * @param professionName  专业名称
     * @return 专业Id
     * @author 杨燕梅
     * @since 2.0.0 2018-12-5 20:46:06
     */
    String queryProfessionIdByName(@Param("professionName") String professionName);

    /**
     * 根据学院ID查询专业信息
     *
     * @param academyId  学院ID
     * @return 根据学院ID查询专业信息
     * @author 杨江涛
     * @since 2.0.0 2018-11-15 10:35:56
     */
    List<ProfessionEntity> findByAcademyId(String academyId);

    /**
     * 根据学院id,查询符合条件的专业
     *
     * @param academyId      学院id
     * @param minSession 在校生最小届入学年份
     * @param maxSession 在校生最大届入学年份
     * @return 专业集合
     * @author 马莹
     * @since 2019年4月30日21:24:32
     */
    List<ProfessionModel> inquirySpecialty(@Param("academyId") String academyId, @Param("minSession") Object minSession, @Param("maxSession") Object maxSession);
}
